import { defineStore } from 'pinia'
import notice from '@/assets/map3/messageNotice.mp3'

export const useSystemStore = defineStore('system', {
  state: () => {
    return {
      // 可以添加一个状态来控制音频播放
      isPlaying: false,
      showLoading: false,
    }
  },
  actions: {
    playNoticeSound() {
      try {
        // 创建音频对象
        const audio = new Audio(notice)
        // 播放音频
        audio.play()
          .then(() => {
            this.isPlaying = true
            // 监听音频播放结束
            audio.onended = () => {
              this.isPlaying = false
            }
          })
          .catch(error => {
            console.error('播放提示音失败:', error)
          })
      } catch (error) {
        console.error('创建音频对象失败:', error)
      }
    },

    /**
     * 格式化时间戳
     * @param {number} timestamp - 时间戳（毫秒）
     * @returns {string} 格式化后的时间字符串
     */
    formatTimestamp(timestamp) {
        const date = new Date(timestamp);
        const now = new Date();
        const isSameDay = (d1, d2) =>
          d1.getFullYear() === d2.getFullYear() &&
          d1.getMonth() === d2.getMonth() &&
          d1.getDate() === d2.getDate();

        // 补零函数
        const padZero = (num) => String(num).padStart(2, '0');

        // 获取小时和分钟
        const hours = padZero(date.getHours());
        const minutes = padZero(date.getMinutes());

        // 判断是否是今天
        if (isSameDay(date, now)) {
          return `${hours}:${minutes}`;
        }

        // 判断是否是昨天
        const yesterday = new Date(now);
        yesterday.setDate(now.getDate() - 1);
        if (isSameDay(date, yesterday)) {
          return `昨天 ${hours}:${minutes}`;
        }

        // 其他日期返回 MM/dd
        const month = padZero(date.getMonth() + 1); // 月份从 0 开始，需加 1
        const day = padZero(date.getDate());
        return `${month}/${day}`;
    }

  },
  getters: {
    // 可以添加一个 getter 来获取播放状态
    getPlayingStatus: (state) => state.isPlaying
  }
})
